/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.proyecto.controlador;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.Municipio;
import sv.com.intesal.conexion.cConexion;
import sv.com.intesal.proyecto.bean.Cliente;
import sv.com.intesal.proyecto.bean.TipoCliente;
import sv.com.intesal.proyecto.sql.SQLCliente;

/**
 *
 * @author JM
 */
public class ClienteControlador {

    public List<Cliente> fillCombox() throws Exception {

        List<Cliente> list = new ArrayList<Cliente>();
        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLCliente.buscarClientes).executeQuery();
            while (rs.next()) {
                Cliente cl = new Cliente();
                cl.setCodigo_c(rs.getInt("id_c"));
                cl.setEmpresa_c(rs.getString("empresa_c"));
                cl.setContacto_c(rs.getString("contacto_c"));
                cl.setEmail_c(rs.getString("email_c"));
                cl.setDireccion_c(rs.getString("direccion_c"));
                cl.setOtra_informacion_c(rs.getString("otra_informacion_c"));
                cl.setTelefono_c(rs.getString("telefono_c"));
                cl.setRegistro_c(rs.getString("registro_c"));
                cl.setNit_c(rs.getString("nit_c"));
                cl.setGiro_c(rs.getString("giro_c"));
                cl.setPlazo_c(rs.getInt("plazo_c"));
                cl.setLimite_credito(rs.getDouble("limite_credito_c"));
                cl.setAplicar_retencion_c(rs.getString("aplicar_retencion_c"));

                cl.setNombre_mu(rs.getString("nombre_mu"));
                cl.setId_mu(rs.getInt("id_mu"));
                cl.setId_mu2(rs.getInt("id_mu"));

                cl.setNombre_d(rs.getString("nombre_d"));
                cl.setId_d(rs.getInt("id_d"));
                cl.setId_d2(rs.getInt("id_d"));

                cl.setNombre_p(rs.getString("nombre_p"));
                cl.setId_p(rs.getInt("id_p"));
                cl.setId_p2(rs.getInt("id_p"));

                cl.setId_tc(rs.getInt("id_tc"));
                cl.setNombre_tc(rs.getString("nombre_tc"));
                list.add(cl);
            }

            rs.close();
            return list;
        } catch (Exception ex) {
            throw new Exception(ex);
        }
    }

    public List<Cliente> fillGrid() throws Exception {
        try {
            return this.fillCombox();
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public void setMantenimientoCliente(Cliente cliente) throws Exception {

        PreparedStatement ps = null;
        Connection cnn = null;

        try {
            cnn = cConexion.conectar();
            if (cliente.getCodigo_c() == null) {
                ps = cnn.prepareStatement(SQLCliente.insertCliente);
            } else {
                ps = cnn.prepareStatement(SQLCliente.updateCliente);
                ps.setInt(15, cliente.getCodigo_c());
            }

            ps.setInt(1, cliente.getId_tc());
            // ps.setInt(2, cliente.getMunicupio().get(0).getId_mu());
            ps.setInt(2, cliente.getId_mu());
            ps.setString(3, cliente.getEmpresa_c());
            ps.setString(4, cliente.getContacto_c());
            ps.setString(5, cliente.getEmail_c());
            ps.setString(6, cliente.getDireccion_c());
            ps.setString(7, cliente.getOtra_informacion_c());
            ps.setString(8, cliente.getTelefono_c());
            ps.setString(9, cliente.getRegistro_c());
            ps.setString(10, cliente.getNit_c());
            ps.setString(11, cliente.getGiro_c());
            ps.setInt(12, cliente.getPlazo_c());
            ps.setDouble(13, cliente.getLimite_credito());
            ps.setString(14, cliente.getAplicar_retencion_c());

            ps.executeUpdate();

            Mensaje m = new Mensaje();
            if (cliente.getCodigo_c() == null) {
                m.messageInfo(m.getIinformation());
            } else {
                m.messageInfo(m.getImodificada());
            }
        } catch (Exception ex) {
            throw new Exception(ex);
        }
    }

    public Cliente getCliente_x_Proyecto(Integer codigo_p) throws Exception {
        Connection cnn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {

            cnn = cConexion.conectar();
            ps = cnn.prepareStatement(SQLCliente.getDatosCliente_x_Proyecto);
            ps.setInt(1, codigo_p);
            rs = ps.executeQuery();
            rs.next();


            Cliente cl = new Cliente();
            cl.setCodigo_c(rs.getInt("id_c"));
            cl.setEmpresa_c(rs.getString("empresa_c"));
            cl.setContacto_c(rs.getString("contacto_c"));
            cl.setEmail_c(rs.getString("email_c"));
            cl.setDireccion_c(rs.getString("direccion_c"));
            cl.setOtra_informacion_c(rs.getString("otra_informacion_c"));
            cl.setTelefono_c(rs.getString("telefono_c"));
            cl.setRegistro_c(rs.getString("registro_c"));
            cl.setNit_c(rs.getString("nit_c"));
            cl.setGiro_c(rs.getString("giro_c"));
            cl.setPlazo_c(rs.getInt("plazo_c"));
            cl.setLimite_credito(rs.getDouble("limite_credito_c"));
            cl.setAplicar_retencion_c(rs.getString("aplicar_retencion_c"));

            cl.setNombre_mu(rs.getString("nombre_mu"));
            cl.setId_mu(rs.getInt("id_mu"));
            cl.setId_mu2(rs.getInt("id_mu"));

            cl.setNombre_d(rs.getString("nombre_d"));
            cl.setId_d(rs.getInt("id_d"));
            cl.setId_d2(rs.getInt("id_d"));

            cl.setNombre_p(rs.getString("nombre_p"));
            cl.setId_p(rs.getInt("id_p"));
            cl.setId_p2(rs.getInt("id_p"));

            cl.setId_tc(rs.getInt("id_tc"));
            cl.setNombre_tc(rs.getString("nombre_tc"));

            return cl;
        } catch (Exception ex) {
            throw new Exception(ex);
        }
    }
}
